package com.jyy.prefabricated.request.pmssMpng;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.bocom.api.AbstractBocomRequest;
import com.bocom.api.BizContent;
import com.jyy.prefabricated.response.pmssMpng.MPNG210002ResponseV1;

import java.util.List;


public class MPNG210002RequestV1 extends AbstractBocomRequest<MPNG210002ResponseV1> {

  @Override
  public Class<MPNG210002ResponseV1> getResponseClass() {
    return MPNG210002ResponseV1.class;
  }

  @Override
  public boolean isNeedEncrypt() {
    return false;
  }

  @Override
  public String getMethod() {
    return "POST";
  }

  @Override
  public Class<? extends BizContent> getBizContentClass() {
    return MPNG210002RequestV1Biz.class;
  }

  public static class MPNG210002RequestV1Biz implements BizContent {

	/** "req_head"*/
	@JsonProperty("req_head")
	private ReqHead reqHead;

	public static class ReqHead {
     /** 交易时间 yyyymmddhhmmss*/
     @JsonProperty("trans_time")
     private String transTime;

     /** 终端版本信息*/
     @JsonProperty("version")
     private String version;

	public String getTransTime() {
		return transTime;
	}

	public void setTransTime(String transTime) {
		this.transTime = transTime;
	}
	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}
}	/** "req_body"*/
	@JsonProperty("req_body")
	private ReqBody reqBody;

	public static class ReqBody {
     /** 交易失效时间*/
     @JsonProperty("valid_period")
     private String validPeriod;

     /** 付款码文本*/
     @JsonProperty("scan_code_text")
     private String scanCodeText;

     /** 终端号*/
     @JsonProperty("terminal_info")
     private String terminalInfo;

     /** 服务商编号*/
     @JsonProperty("partner_id")
     private String partnerId;

     /** 商户内部备注*/
     @JsonProperty("mer_memo")
     private String merMemo;

	/** "额外返回的属性"*/
	@JsonProperty("require_fields")
	private List<RequireFields> requireFields;

	public static class RequireFields {
     /** 额外返回的属性*/
     @JsonProperty("require_field")
     private String requireField;

	public String getRequireField() {
		return requireField;
	}

	public void setRequireField(String requireField) {
		this.requireField = requireField;
	}
}     /** 币种*/
     @JsonProperty("currency")
     private String currency;

     /** 终端批次号*/
     @JsonProperty("term_batch_no")
     private String termBatchNo;

     /** 交易场景*/
     @JsonProperty("tran_scene")
     private String tranScene;

     /** ip*/
     @JsonProperty("ip")
     private String ip;

	/** "附加交易信息"*/
	@JsonProperty("addi_trade_data")
	private AddiTradeData addiTradeData;

	public static class AddiTradeData {
     /** 用法标识*/
     @JsonProperty("method")
     private String method;

	/** "用法取值"*/
	@JsonProperty("value")
	private Value value;

	public static class Value {
     /** 证件号*/
     @JsonProperty("card_no")
     private String cardNo;

     /** 持卡人姓名*/
     @JsonProperty("name")
     private String name;

     /** 证件类型  */
     @JsonProperty("card_type")
     private String cardType;

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public String getCardType() {
		return cardType;
	}

	public void setCardType(String cardType) {
		this.cardType = cardType;
	}
}	public String getMethod() {
		return method;
	}

	public void setMethod(String method) {
		this.method = method;
	}
	public Value getValue() {
		return value;
	}

	public void setValue(Value value) {
		this.value = value;
	}
}     /** 商户编号*/
     @JsonProperty("mer_ptc_id")
     private String merPtcId;

     /** 商户侧交易时间*/
     @JsonProperty("mer_trade_time")
     private String merTradeTime;

     /** 终端流水号*/
     @JsonProperty("term_pos_no")
     private String termPosNo;

     /** 商户侧交易日期*/
     @JsonProperty("mer_trade_date")
     private String merTradeDate;

     /** 门店编号*/
     @JsonProperty("shop_id")
     private String shopId;

     /** 商户交易编号*/
     @JsonProperty("pay_mer_tran_no")
     private String payMerTranNo;

     /** 商户订单总金额*/
     @JsonProperty("total_amount")
     private String totalAmount;

     /** 线上或线下*/
     @JsonProperty("location")
     private String location;

     /** 商品详情*/
     @JsonProperty("detail")
     private String detail;

     /** 交易内容*/
     @JsonProperty("tran_content")
     private String tranContent;

	public String getValidPeriod() {
		return validPeriod;
	}

	public void setValidPeriod(String validPeriod) {
		this.validPeriod = validPeriod;
	}
	public String getScanCodeText() {
		return scanCodeText;
	}

	public void setScanCodeText(String scanCodeText) {
		this.scanCodeText = scanCodeText;
	}
	public String getTerminalInfo() {
		return terminalInfo;
	}

	public void setTerminalInfo(String terminalInfo) {
		this.terminalInfo = terminalInfo;
	}
	public String getPartnerId() {
		return partnerId;
	}

	public void setPartnerId(String partnerId) {
		this.partnerId = partnerId;
	}
	public String getMerMemo() {
		return merMemo;
	}

	public void setMerMemo(String merMemo) {
		this.merMemo = merMemo;
	}
	public List<RequireFields> getRequireFields() {
		return requireFields;
	}

	public void setRequireFields(List<RequireFields> requireFields) {
		this.requireFields = requireFields;
	}
	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}
	public String getTermBatchNo() {
		return termBatchNo;
	}

	public void setTermBatchNo(String termBatchNo) {
		this.termBatchNo = termBatchNo;
	}
	public String getTranScene() {
		return tranScene;
	}

	public void setTranScene(String tranScene) {
		this.tranScene = tranScene;
	}
	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}
	public AddiTradeData getAddiTradeData() {
		return addiTradeData;
	}

	public void setAddiTradeData(AddiTradeData addiTradeData) {
		this.addiTradeData = addiTradeData;
	}
	public String getMerPtcId() {
		return merPtcId;
	}

	public void setMerPtcId(String merPtcId) {
		this.merPtcId = merPtcId;
	}
	public String getMerTradeTime() {
		return merTradeTime;
	}

	public void setMerTradeTime(String merTradeTime) {
		this.merTradeTime = merTradeTime;
	}
	public String getTermPosNo() {
		return termPosNo;
	}

	public void setTermPosNo(String termPosNo) {
		this.termPosNo = termPosNo;
	}
	public String getMerTradeDate() {
		return merTradeDate;
	}

	public void setMerTradeDate(String merTradeDate) {
		this.merTradeDate = merTradeDate;
	}
	public String getShopId() {
		return shopId;
	}

	public void setShopId(String shopId) {
		this.shopId = shopId;
	}
	public String getPayMerTranNo() {
		return payMerTranNo;
	}

	public void setPayMerTranNo(String payMerTranNo) {
		this.payMerTranNo = payMerTranNo;
	}
	public String getTotalAmount() {
		return totalAmount;
	}

	public void setTotalAmount(String totalAmount) {
		this.totalAmount = totalAmount;
	}
	public String getLocation() {
		return location;
	}

	public void setLocation(String location) {
		this.location = location;
	}
	public String getDetail() {
		return detail;
	}

	public void setDetail(String detail) {
		this.detail = detail;
	}
	public String getTranContent() {
		return tranContent;
	}

	public void setTranContent(String tranContent) {
		this.tranContent = tranContent;
	}
}	public ReqHead getReqHead() {
		return reqHead;
	}

	public void setReqHead(ReqHead reqHead) {
		this.reqHead = reqHead;
	}
	public ReqBody getReqBody() {
		return reqBody;
	}

	public void setReqBody(ReqBody reqBody) {
		this.reqBody = reqBody;
	}
}
}